Mac OS에서 AWS CLI 환경 설정하기
안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 Mac OS에서 AWS CLI환경 설정 방법에 대해서 정리해볼까 합니다.
AWS CLI란?
AWS 명령줄 인터페이스(CLI)는 AWS 서비스를 관리하는 통합 도구입니다. 도구 하나만 다운로드하여 구성하면 여러 AWS 서비스를 명령줄에서 제어하고 스크립트를 통해 자동화할 수 있습니다.
즉, 셸의 명령을 사용하여 AWS 서비스와 상호 작용할 수 있는 오픈 소스 도구라고 보시면 됩니다.
AWS CLI 설치
AWS CLI 설치, 업데이트, 제거는 여기를 참고해주세요.
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg" sudo installer -pkg AWSCLIV2.pkg -target /
다음 명령어로 간단하게 Mac OS에서 AWS CLI 최신 버전을 설치할 수 있습니다.
aws --version
aws --version 명령어를 통해 설치가 완료됐는지 확인해봅시다.
위 이미지처럼 버전이 나오면 정상적으로 설치가 된것 입니다.
credentials와 config
이제 AWS CLI의 설치가 끝났으므로 환경 설정을 해야 합니다.
환경 설정에 필요한 파일은 credentials와 config가 있습니다.
- 민감한 정보는 credentials로 설정
- 중요하지 않은 정보는 config로 설정
aws configure list
먼저 aws configure list 명령어로 AWS CLI에서 설정된 기본 프로필을 보면 처음에는 아무것도 입력되어 있지 않기 때문에 프로필 먼저 설정 해줘야 합니다.
aws configure
aws configure 명령어를 입력해서 액세스 키, 시크릿 키, 리전을 설정할 수 있습니다.
액세스 키와 시크릿 키의 경우 IAM 사용자에서 액세스 키 만들기 버튼을 클릭해서 확인할 수 있습니다.
aws configure list
설정이 끝나고 configure list를 확인해 보면 액세스 키와 시크릿 키가 적용된 것을 볼 수 있습니다.
credentials 설정
configure 설정이 끝났다면, ~/.aws/
경로에 파일이 만들어지게 됩니다.
vi ~/.aws/credentials
vi ~/.aws/credentials 명령어를 통해 프로필을 작성합시다.
[role] region = ap-northeast-1 mfa_serial = arn:aws::mfa/ role_arn = arn:aws:iam:role/ aws_access_key_id = aws_secret_access_key = source_profile = default
먼저 리전은 본인이 작업할 AWS 리전을 입력합니다.
mfa_serial은 IAM 사용자에서 보안 자격 증명 탭을 보면 mfa_serial을 확인할 수 있습니다.
role_arn은 role로 전환 한 다음, 역할에서 확인할 수 있습니다.
config 설정
vi ~/.aws/config
이번에는 credentials이 아닌 config로 프로팔을 설정해 봅시다.
[role] region = ap-northeast-1 mfa_serial = arn:aws::mfa/ role_arn = arn:aws:iam:role/ source_profile = default
credentials와 다른 점은 액세스 키와 시크릿 키는 입력하지 않는다는 것입니다.
AWS CLI 테스트
- aws sts get-caller-identity 명령어를 입력해보면
정상적으로 프로필이 출력되는 것을 볼 수 있습니다. 이제 롤로 전환을 해보도록 하겠습니다.
- export AWS_DEFAULT_PROFILE=role 커맨드를 입력합니다.
다시 aws sts get-caller-identity 명령어를 입력하면 이번에는 MFA를 입력하라고 나옵니다. 입력하고 나면 정상적으로 롤이 전환된 것을 볼 수 있습니다. 실제 롤이 전환됐는지 확인하기 위해서 현재 실행 중인 ec2 리스트를 불러와 보도록 하겠습니다.
- aws ec2 describe-instances --filters Name=instance-state-name,Values=running --query "Reservations[*].Instances[*].InstanceId" --output text
위 명령어를 실행시키면 현재 실행 중인 EC2 리스트를 불러오는 것을 확인할 수 있습니다.